using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Vo;


public class EventHandleData
{
    public string arg1;
    public string arg2;
    public string arg3;
    public string arg4;

    Action<EventHandleData> callback;
    public PlayerEventDefine eventName;
    public object extenData;

    EventHandleData(PlayerEventDefine name, Action<EventHandleData> callback, object extenData, string arg1 = null, string arg2 = null, string arg3 = null, string arg4 = null)
    {
        this.arg1 = arg1;
        this.arg2 = arg2;
        this.arg3 = arg3;
        this.arg4 = arg4;
        this.eventName = name;
        this.callback = callback;
        this.extenData = extenData;
    }

    public static EventHandleData Get(PlayerEventDefine name, Action<EventHandleData> callback, object extenDat, string arg1 = null, string arg2 = null, string arg3 = null, string arg4 = null)
    {
        return new EventHandleData(name, callback, extenDat, arg1, arg1, arg3, arg4);
    }

    public void Excute()
    {
        this.callback(this);
    }
}

public class EventHandleArgs
{
    public object arg1;
    public object arg2;
    public object arg3;
    public object arg4;
    public UserVo playerData;
    EventHandleArgs(UserVo playerData, object arg1 = null, object arg2 = null, object arg3 = null, object arg4 = null)
    {
        this.playerData = playerData;
        this.arg1 = arg1;
        this.arg2 = arg2;
        this.arg3 = arg3;
        this.arg4 = arg4;
    }

    public static EventHandleArgs Get(UserVo playerData,object arg1 = null, object arg2 = null, object arg3 = null, object arg4 = null)
    {
        return new EventHandleArgs(playerData, arg1, arg1, arg3, arg4);
    }
}
